/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.tmd.controlefinanceiro.modelo;

import java.io.Serializable;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

/**
 *
 * @author luis
 */
@Entity
@Table(name="cliente")
public class Cliente implements Serializable{
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Integer codigo;
    @Column(length = 40,nullable = true)
    private String contato;
    @Column(length = 20,nullable = true)
    private String registro;
    private Double taxaReceber;
    private Double taxaPagar;
    private Double adValorEmPagar;
    private Double adValorEmReceber;
    private Double valorDebito;
      
    @OneToOne
    @JoinColumn(columnDefinition = "codigo_usuario",unique = true, nullable = true)
    @Cascade(value=CascadeType.ALL)
    private Usuario usuario;
    
    public Cliente() {
    }

    public Cliente(Integer codigo, String contato, String registro, Double taxaReceber, Double taxaPagar, Double adValorEmPagar, Double adValorEmReceber, Double valorDebito, Usuario usuario) {
        this.codigo = codigo;
        this.contato = contato;
        this.registro = registro;
        this.taxaReceber = taxaReceber;
        this.taxaPagar = taxaPagar;
        this.adValorEmPagar = adValorEmPagar;
        this.adValorEmReceber = adValorEmReceber;
        this.valorDebito = valorDebito;
        this.usuario = usuario;
    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getContato() {
        return contato;
    }

    public void setContato(String contato) {
        this.contato = contato;
    }

    public String getRegistro() {
        return registro;
    }

    public void setRegistro(String registro) {
        this.registro = registro;
    }

    public Double getTaxaReceber() {
        return taxaReceber;
    }

    public void setTaxaReceber(Double taxaReceber) {
        this.taxaReceber = taxaReceber;
    }

    public Double getTaxaPagar() {
        return taxaPagar;
    }

    public void setTaxaPagar(Double taxaPagar) {
        this.taxaPagar = taxaPagar;
    }

    public Double getAdValorEmPagar() {
        return adValorEmPagar;
    }

    public void setAdValorEmPagar(Double adValorEmPagar) {
        this.adValorEmPagar = adValorEmPagar;
    }

    public Double getAdValorEmReceber() {
        return adValorEmReceber;
    }

    public void setAdValorEmReceber(Double adValorEmReceber) {
        this.adValorEmReceber = adValorEmReceber;
    }
    
    public  Double getValorDebito(){
        return valorDebito;
    }
    
    public void setValorDebito(double valorDebito){
        this.valorDebito = valorDebito;
    }
    
    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 47 * hash + Objects.hashCode(this.codigo);
        hash = 47 * hash + Objects.hashCode(this.contato);
        hash = 47 * hash + Objects.hashCode(this.registro);
        hash = 47 * hash + Objects.hashCode(this.taxaReceber);
        hash = 47 * hash + Objects.hashCode(this.taxaPagar);
        hash = 47 * hash + Objects.hashCode(this.adValorEmPagar);
        hash = 47 * hash + Objects.hashCode(this.adValorEmReceber);
        hash = 47 * hash + Objects.hashCode(this.valorDebito);
        hash = 47 * hash + Objects.hashCode(this.usuario);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Cliente other = (Cliente) obj;
        if (!Objects.equals(this.codigo, other.codigo)) {
            return false;
        }
        if (!Objects.equals(this.contato, other.contato)) {
            return false;
        }
        if (!Objects.equals(this.registro, other.registro)) {
            return false;
        }
        if (!Objects.equals(this.taxaReceber, other.taxaReceber)) {
            return false;
        }
        if (!Objects.equals(this.taxaPagar, other.taxaPagar)) {
            return false;
        }
        if (!Objects.equals(this.adValorEmPagar, other.adValorEmPagar)) {
            return false;
        }
        if (!Objects.equals(this.adValorEmReceber, other.adValorEmReceber)) {
            return false;
        }
        if (!Objects.equals(this.valorDebito, other.valorDebito)) {
            return false;
        }
        if (!Objects.equals(this.usuario, other.usuario)) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Cliente{" + "codigo=" + codigo + ", contato=" + contato + ", registro=" + registro + ", taxaReceber=" + taxaReceber + ", taxaPagar=" + taxaPagar + ", adValorEmPagar=" + adValorEmPagar + ", adValorEmReceber=" + adValorEmReceber + ", valorDebito=" + valorDebito + ", usuario=" + usuario + '}';
    }
     
}
